package uy.edu.ort.negocio;

import java.util.List;
import java.util.logging.Logger;
import uy.edu.ort.dominio.Cliente;
import uy.edu.ort.dominio.Programa;
import uy.edu.ort.excepcionesdb.DBConsultarException;
import uy.edu.ort.interfaces.IPersistencia;

/**
 *
 * @author 153287-154559
 */
public class Consultas {

    private static IPersistencia persistencia = Persistencia.ObtenerPersistencia();
    
    private static final Logger LOGGER = Logger.getLogger(Consultas.class.getName());
    
    /**
     * Retorna todos los clientes ingresados.
     * @return 
     */
    public static List<Cliente> consultaClientes() {
        List<Cliente> retorno = null;
        try {
            retorno = persistencia.obtenerListaClientes();
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }

    /**
     * Retorna un cliente dado su id
     * @param identificador
     * @return 
     */
    public static List<Cliente> consultaClientesPorIdentificador(String identificador) {
        List<Cliente> retorno = null;
        try {
            retorno = persistencia.obtenerClienteByIdentificador(identificador);
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }

    /**
     * Retorna todos los programas ingresados
     * @return 
     */
    public static List<Programa> consultaProgramas() {
        List<Programa> retorno = null;
        try {
            retorno = persistencia.obtenerListaProgramas();
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }

        
    /**
     * Dado un nombre de programa retorna el correspondiente programa.
     * @param nombre
     * @return 
     */
    public static List<Programa> consultaProgramasPorNombre(String nombre) {
        List<Programa> retorno = null;
        try {
            retorno = persistencia.obtenerProgramaByNombre(nombre);
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }
    
    /**
     * Retorna lista de programas ordenados por cantidad de paginas.
     * @return 
     */
    public static List<Programa> consultaProgramasPorCantidadDePaginas() {
        List<Programa> retorno = null;
        try {
            retorno = persistencia.obtenerListaProgramasPorPaginas();
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }

    /**
     * Retorna lista programas ordenados por el tamaño de sus paginas.
     * @return 
     */
    public static List<Programa> consultaProgramasPorTamañoDePaginas() {
        List<Programa> retorno = null;
        try {
            retorno = persistencia.obtenerListaProgramasPorTamaño();
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;

    }

    /**
     * Dado un id de cliente retorna la lista de sus programas.
     * @param idCliente
     * @return 
     */
    public static List<Programa> consultaProgramasPorCliente(String idCliente) {
        List<Programa> retorno = null;
        try {
            retorno = persistencia.obtenerListaProgramasPorCliente(idCliente);
        } catch (DBConsultarException ex) {
            LOGGER.info(ex.getMessage());
        }
        return retorno;
    }

}
